/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.jjsoft.celularessuc.gco.neg;

import com.jjsoft.celularessuc.gco.dao.GenericController;
import com.jjsoft.celularessuc.gco.mdl.DeudaCliente;
import com.jjsoft.celularessuc.gco.mdl.DeudaClienteAbono;
import com.jjsoft.celularessuc.gco.util.AtributoInvalidoException;
import com.jjsoft.celularessuc.gco.util.PagoDeudaValidadorException;
import com.jjsoft.celularessuc.gco.util.ValidarAtributoUtil;
import java.util.List;

/**
 *
 * @author javila
 */
public class DeudaClienteAbonoManager {
     GenericController<DeudaClienteAbono> controladorAbono = new GenericController<DeudaClienteAbono>();
    DeudaClienteManager dcm = new DeudaClienteManager();
    public double registrarPago(DeudaClienteAbono abono) throws PagoDeudaValidadorException {
        try {
            ValidarAtributoUtil.validarDoubleCero("Valor a Pagar", abono.getAbono());
            ValidarAtributoUtil.validarDoubleNegativo("Valor a Pagar", abono.getAbono());
        } catch (AtributoInvalidoException ex) {
            throw new PagoDeudaValidadorException(ex);
        }
        if (abono.getAbono() > abono.getIdDeuda().getSaldoActual()) {
            throw new PagoDeudaValidadorException("El valor a pagar no puede ser mayor al valor de la deuda");
        }
        controladorAbono.create(abono);
        dcm.reducirSaldo(abono.getIdDeuda(), abono.getAbono());
        return abono.getIdDeuda().getSaldoActual();
    }
    
    public List<DeudaClienteAbono> listarPagos(DeudaCliente deuda)
    {
        return controladorAbono.findWhere(new DeudaClienteAbono(), "id_deuda="+deuda.getIdDeuda());
    }
}
